/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is Forte for Java, Community Edition. The Initial * Developer of the Original Code is Sun Microsystems, Inc. Portions * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.editor.options; import java.awt.Color; import java.awt.Font; import java.awt.Insets; import java.util.Map; import java.util.HashMap; import java.util.List; import java.util.ArrayList; import javax.swing.text.JTextComponent; import org.netbeans.editor.Settings; import org.netbeans.editor.DefaultSettings; import org.netbeans.editor.SettingsUtil; import org.netbeans.editor.Coloring; import org.netbeans.editor.BaseKit; import org.netbeans.editor.Syntax; import org.netbeans.editor.MultiKeyBinding; import org.netbeans.editor.ext.ExtSettings; import org.openide.options.SystemOption; import org.openide.util.HelpCtx; /** * Options for the base editor kit * * @author Miloslav Metelka * @version 1.00 */ public class BaseOptions extends OptionSupport { public static final String ABBREV_MAP_PROP = "abbrevMap"; // NOI18N public static final String BASE = "base"; // NOI18N public static final String CARET_BLINK_RATE_PROP = "caretBlinkRate"; // NOI18N public static final String CARET_COLOR_INSERT_MODE_PROP = "caretColorInsertMode"; // NOI18N public static final String CARET_COLOR_OVERWRITE_MODE_PROP = "caretColorOverwriteMode"; // NOI18N public static final String CARET_ITALIC_INSERT_MODE_PROP = "caretItalicInsertMode"; // NOI18N public static final String CARET_ITALIC_OVERWRITE_MODE_PROP = "caretItalicOverwriteMode"; // NOI18N public static final String CARET_TYPE_INSERT_MODE_PROP = "caretTypeInsertMode"; // NOI18N public static final String CARET_TYPE_OVERWRITE_MODE_PROP = "caretTypeOverwriteMode"; // NOI18N public static final String COLORING_MAP_PROP = "coloringMap"; // NOI18N public static final String EXPAND_TABS_PROP = "expandTabs"; // NOI18N public static final String FIND_HIGHLIGHT_SEARCH = "findHighlightSearch"; // NOI18N public static final String FIND_HISTORY_PROP = "findHistory"; // NOI18N public static final String FIND_HISTORY_SIZE_PROP = "findHistorySize"; // NOI18N public static final String FIND_INC_SEARCH_DELAY_PROP = "findIncSearchDelay"; // NOI18N public static final String FIND_INC_SEARCH_PROP = "findIncSearch"; // NOI18N public static final String FIND_MATCH_CASE_PROP = "findMatchCase"; // NOI18N public static final String FIND_REG_EXP_PROP = "findRegExp"; // NOI18N public static final String FIND_SMART_CASE_PROP = "findSmartCase"; // NOI18N public static final String FIND_WHOLE_WORDS_PROP = "findWholeWords"; // NOI18N public static final String FIND_WRAP_SEARCH_PROP = "findWrapSearch"; // NOI18N public static final String FONT_SIZE_PROP = "fontSize"; // NOI18N public static final String HIGHLIGHT_CARET_ROW_PROP = "highlightCaretRow"; // NOI18N public static final String HIGHLIGHT_MATCHING_BRACKET_PROP = "highlightMatchingBracket"; // NOI18N public static final String KEY_BINDING_LIST_PROP = "keyBindingList"; // NOI18N public static final String LINE_HEIGHT_CORRECTION_PROP = "lineHeightCorrection"; // NOI18N public static final String LINE_NUMBER_MARGIN_PROP = "lineNumberMargin"; // NOI18N public static final String LINE_NUMBER_VISIBLE_PROP = "lineNumberVisible"; // NOI18N public static final String MARGIN_PROP = "margin"; // NOI18N public static final String SCROLL_FIND_INSETS_PROP = "scrollFindInsets"; // NOI18N public static final String SCROLL_JUMP_INSETS_PROP = "scrollJumpInsets"; // NOI18N public static final String SPACES_PER_TAB_PROP = "spacesPerTab"; // NOI18N public static final String STATUS_BAR_CARET_DELAY_PROP = "statusBarCaretDelay"; // NOI18N public static final String STATUS_BAR_VISIBLE_PROP = "statusBarVisible"; // NOI18N public static final String TAB_SIZE_PROP = "tabSize"; // NOI18N public static final String TEXT_LIMIT_LINE_COLOR_PROP = "textLimitLineColor"; // NOI18N public static final String TEXT_LIMIT_LINE_VISIBLE_PROP = "textLimitLineVisible"; // NOI18N public static final String TEXT_LIMIT_WIDTH_PROP = "textLimitWidth"; // NOI18N static final String[] BASE_PROP_NAMES = { ABBREV_MAP_PROP, CARET_BLINK_RATE_PROP, CARET_COLOR_INSERT_MODE_PROP, CARET_COLOR_OVERWRITE_MODE_PROP, CARET_ITALIC_INSERT_MODE_PROP, CARET_ITALIC_OVERWRITE_MODE_PROP, CARET_TYPE_INSERT_MODE_PROP, CARET_TYPE_OVERWRITE_MODE_PROP, COLORING_MAP_PROP, EXPAND_TABS_PROP, FONT_SIZE_PROP, HIGHLIGHT_CARET_ROW_PROP, HIGHLIGHT_MATCHING_BRACKET_PROP, KEY_BINDING_LIST_PROP, LINE_HEIGHT_CORRECTION_PROP, LINE_NUMBER_MARGIN_PROP, LINE_NUMBER_VISIBLE_PROP, MARGIN_PROP, SCROLL_FIND_INSETS_PROP, SCROLL_JUMP_INSETS_PROP, SPACES_PER_TAB_PROP, STATUS_BAR_CARET_DELAY_PROP, STATUS_BAR_VISIBLE_PROP, TAB_SIZE_PROP, TEXT_LIMIT_LINE_COLOR_PROP, TEXT_LIMIT_LINE_VISIBLE_PROP, TEXT_LIMIT_WIDTH_PROP }; static final long serialVersionUID =-5469192431366914841L; public BaseOptions() { this(BaseKit.class, BASE); } public BaseOptions(Class kitClass, String typeName) { super(kitClass, typeName); } public HelpCtx getHelpCtx () { return new HelpCtx (BaseOptions.class); } public int getTabSize() { return getSettingInteger(Settings.TAB_SIZE); } public void setTabSize(int tabSize) { setSettingInteger(Settings.TAB_SIZE, tabSize); } public boolean getExpandTabs() { return getSettingBoolean(Settings.EXPAND_TABS); } public void setExpandTabs(boolean expandTabs) { setSettingBoolean(Settings.EXPAND_TABS, expandTabs); } public int getSpacesPerTab() { return getSettingInteger(Settings.SPACES_PER_TAB); } public void setSpacesPerTab(int i){ setSettingInteger(Settings.SPACES_PER_TAB, i); } public Map getAbbrevMap() { return new HashMap( (Map)getSettingValue(Settings.ABBREV_MAP) ); } public void setAbbrevMap(Map map) { setSettingValue(Settings.ABBREV_MAP, map); } public String getCaretTypeInsertMode() { return (String) getSettingValue(Settings.CARET_TYPE_INSERT_MODE); } public void setCaretTypeInsertMode(String type) { setSettingValue(Settings.CARET_TYPE_INSERT_MODE, type); } public String getCaretTypeOverwriteMode() { return (String) getSettingValue(Settings.CARET_TYPE_OVERWRITE_MODE); } public void setCaretTypeOverwriteMode(String type) { setSettingValue(Settings.CARET_TYPE_OVERWRITE_MODE, type); } public boolean getCaretItalicInsertMode() { return getSettingBoolean(Settings.CARET_ITALIC_INSERT_MODE); } public void setCaretItalicInsertMode(boolean b) { setSettingBoolean(Settings.CARET_ITALIC_INSERT_MODE, b); } public boolean getCaretItalicOverwriteMode() { return getSettingBoolean(Settings.CARET_ITALIC_OVERWRITE_MODE); } public void setCaretItalicOverwriteMode(boolean b) { setSettingBoolean(Settings.CARET_ITALIC_OVERWRITE_MODE, b); } public Color getCaretColorInsertMode() { return (Color) getSettingValue(Settings.CARET_COLOR_INSERT_MODE); } public void setCaretColorInsertMode(Color color) { setSettingValue(Settings.CARET_COLOR_INSERT_MODE, color); } public Color getCaretColorOverwriteMode() { return (Color) getSettingValue(Settings.CARET_COLOR_OVERWRITE_MODE); } public void setCaretColorOverwriteMode(Color color) { setSettingValue(Settings.CARET_COLOR_OVERWRITE_MODE, color); } public int getCaretBlinkRate() { return getSettingInteger(Settings.CARET_BLINK_RATE); } public void setCaretBlinkRate(int rate) { setSettingInteger(Settings.CARET_BLINK_RATE, rate); } public boolean getLineNumberVisible() { return getSettingBoolean(Settings.LINE_NUMBER_VISIBLE); } public void setLineNumberVisible(boolean b) { setSettingBoolean(Settings.LINE_NUMBER_VISIBLE, b); } public Insets getScrollJumpInsets() { return (Insets)getSettingValue(Settings.SCROLL_JUMP_INSETS); } public void setScrollJumpInsets(Insets i) { setSettingValue(Settings.SCROLL_JUMP_INSETS, i); } public Insets getScrollFindInsets() { return (Insets)getSettingValue(Settings.SCROLL_FIND_INSETS); } public void setScrollFindInsets(Insets i) { setSettingValue(Settings.SCROLL_FIND_INSETS, i); } public List getKeyBindingList() { Class kitClass = getKitClass(); Settings.KitAndValue[] kav = getSettingKitAndValueArray(Settings.KEY_BINDING_LIST); List kbList = null; for (int i = 0; i < kav.length; i++) { if (kav[i].kitClass == kitClass) { kbList = (List)kav[i].value; } } if (kbList == null) { kbList = new ArrayList(); } // must convert all members to serializable MultiKeyBinding int cnt = kbList.size(); for (int i = 0; i < cnt; i++) { Object o = kbList.get(i); if (!(o instanceof MultiKeyBinding) && o != null) { JTextComponent.KeyBinding b = (JTextComponent.KeyBinding)o; kbList.set(i, new MultiKeyBinding(b.key, b.actionName)); } } List kb2 = new ArrayList( kbList ); kb2.add( 0, kitClass.getName() ); //insert kit class name return kb2; } public void setKeyBindingList(List list) { if( list.get( 0 ) instanceof Class || list.get( 0 ) instanceof String ) { list.remove( 0 ); //remove kit class name } setSettingValue(Settings.KEY_BINDING_LIST, list); } public Map getColoringMap() { Map cm = new HashMap( SettingsUtil.getColoringMap(getKitClass(), false) ); cm.put(null, getKitClass().getName() ); // add kit class name return cm; } public void setColoringMap(Map coloringMap) { if (coloringMap != null) { coloringMap.remove(null); // remove kit class name SettingsUtil.updateColoringSettings(getKitClass(), coloringMap, false); } } public int getFontSize() { Coloring dc = SettingsUtil.getColoring(getKitClass(), Settings.DEFAULT_COLORING, false); return (dc != null) ? dc.getFont().getSize() : DefaultSettings.defaultFont.getSize(); } public void setFontSize(final int size) { final int oldSize = getFontSize(); Map cm = SettingsUtil.getColoringMap(getKitClass(), false); if (cm != null) { SettingsUtil.changeColorings(cm, new SettingsUtil.ColoringChanger() { public Coloring changeColoring(String coloringName, Coloring c) { if (c != null) { Font font = c.getFont(); if (font != null && font.getSize() == oldSize) { return Coloring.changeFontSize(c, size); } } return c; } } ); SettingsUtil.updateColoringSettings(getKitClass(), cm, false); } } public float getLineHeightCorrection() { return ((Float) getSettingValue(Settings.LINE_HEIGHT_CORRECTION)).floatValue(); } public void setLineHeightCorrection(float f) { setSettingValue(Settings.LINE_HEIGHT_CORRECTION, new Float(f)); } public Insets getMargin() { return (Insets)getSettingValue(Settings.MARGIN); } public void setMargin(Insets i) { setSettingValue(Settings.MARGIN, i); } public Insets getLineNumberMargin() { return (Insets)getSettingValue(Settings.LINE_NUMBER_MARGIN); } public void setLineNumberMargin(Insets i) { setSettingValue(Settings.LINE_NUMBER_MARGIN, i); } public boolean getStatusBarVisible() { return getSettingBoolean(Settings.STATUS_BAR_VISIBLE); } public void setStatusBarVisible(boolean v) { setSettingBoolean(Settings.STATUS_BAR_VISIBLE, v); } public int getStatusBarCaretDelay() { return getSettingInteger(Settings.STATUS_BAR_CARET_DELAY); } public void setStatusBarCaretDelay(int delay) { setSettingInteger(Settings.STATUS_BAR_CARET_DELAY, delay); } public boolean getFindHighlightSearch() { return getSettingBoolean(Settings.FIND_HIGHLIGHT_SEARCH); } public void setFindHighlightSearch(boolean b) { setSettingBoolean(Settings.FIND_HIGHLIGHT_SEARCH, b); } public boolean getFindIncSearch() { return getSettingBoolean(Settings.FIND_INC_SEARCH); } public void setFindIncSearch(boolean b) { setSettingBoolean(Settings.FIND_INC_SEARCH, b); } public int getFindIncSearchDelay() { return getSettingInteger(Settings.FIND_INC_SEARCH_DELAY); } public void setFindIncSearchDelay(int delay) { setSettingInteger(Settings.FIND_INC_SEARCH_DELAY, delay); } public boolean getFindWrapSearch() { return getSettingBoolean(Settings.FIND_WRAP_SEARCH); } public void setFindWrapSearch(boolean b) { setSettingBoolean(Settings.FIND_WRAP_SEARCH, b); } public boolean getFindSmartCase() { return getSettingBoolean(Settings.FIND_SMART_CASE); } public void setFindSmartCase(boolean b) { setSettingBoolean(Settings.FIND_SMART_CASE, b); } public Map getFindHistory() { return new HashMap( (Map)getSettingValue(Settings.FIND_HISTORY) ); } public void setFindHistory(Map m) { setSettingValue(Settings.FIND_HISTORY, m); } public int getFindHistorySize() { return getSettingInteger(Settings.FIND_HISTORY_SIZE); } public void setFindHistorySize(int size) { setSettingInteger(Settings.FIND_HISTORY_SIZE, size); } public Color getTextLimitLineColor() { return (Color)getSettingValue(Settings.TEXT_LIMIT_LINE_COLOR); } public void setTextLimitLineColor(Color color) { setSettingValue(Settings.TEXT_LIMIT_LINE_COLOR, color); } public int getTextLimitWidth() { return getSettingInteger(Settings.TEXT_LIMIT_WIDTH); } public void setTextLimitWidth(int width) { setSettingInteger(Settings.TEXT_LIMIT_WIDTH, width); } public boolean getTextLimitLineVisible() { return getSettingBoolean(Settings.TEXT_LIMIT_LINE_VISIBLE); } public void setTextLimitLineVisible(boolean visible) { setSettingBoolean(Settings.TEXT_LIMIT_LINE_VISIBLE, visible); } public boolean getHighlightMatchingBracket() { return getSettingBoolean(ExtSettings.HIGHLIGHT_MATCHING_BRACKET); } public void setHighlightMatchingBracket(boolean highlight) { setSettingBoolean(ExtSettings.HIGHLIGHT_MATCHING_BRACKET, highlight); } public boolean getHighlightCaretRow() { return getSettingBoolean(ExtSettings.HIGHLIGHT_CARET_ROW); } public void setHighlightCaretRow(boolean highlight) { setSettingBoolean(ExtSettings.HIGHLIGHT_CARET_ROW, highlight); } } /* * Log * 17 Gandalf-post-FCS1.14.1.1 2/28/00 Petr Nejedly * 16 Gandalf-post-FCS1.14.1.0 2/28/00 Petr Nejedly Redesign of * ColoringEditor * 15 Gandalf 1.14 1/13/00 Miloslav Metelka Localization * 14 Gandalf 1.13 1/10/00 Miloslav Metelka * 13 Gandalf 1.12 12/28/99 Miloslav Metelka * 12 Gandalf 1.11 11/11/99 Miloslav Metelka * 11 Gandalf 1.10 11/5/99 Jesse Glick Context help jumbo * patch. * 10 Gandalf 1.9 10/23/99 Ian Formanek NO SEMANTIC CHANGE - Sun * Microsystems Copyright in File Comment * 9 Gandalf 1.8 9/15/99 Miloslav Metelka * 8 Gandalf 1.7 8/27/99 Miloslav Metelka * 7 Gandalf 1.6 8/17/99 Miloslav Metelka * 6 Gandalf 1.5 8/9/99 Ian Formanek Generated Serial Version * UID * 5 Gandalf 1.4 7/29/99 Miloslav Metelka * 4 Gandalf 1.3 7/26/99 Miloslav Metelka * 3 Gandalf 1.2 7/21/99 Miloslav Metelka * 2 Gandalf 1.1 7/21/99 Miloslav Metelka * 1 Gandalf 1.0 7/20/99 Miloslav Metelka * $ */